/**
*
*  Elaborado por: Roberto Loaeza Valerio.
*                 geoAPP.
*                 02-jun-2006.
*
**/
package metodos;

import ewe.fx.Color;
import ewe.fx.Graphics;
import ewe.fx.Image;
import ewe.fx.Pen;
import ewe.fx.mImage;
import ewe.ui.Control;
import ewe.ui.ImageControl;
import ewe.ui.ScrollBarPanel;

public class Metodos {

	/**
	 * Funcion para exportar a formato DXF una poligonal
	 * @param archivoDXF Nombre del archivo.
	 * @param nombreCampos Nombre de los campos a mostrar en el cuadro de construccion
	 * @param valorCampos Valos de los campos a mostrar en el cuadro de construccion
	 * @param X Coordenadas X's
	 * @param Y Coordenadas Y's
	 * @param escala Escala en la cual se generara el archivo 1 a <b>escala</b>
	 * @return
	 */
	public boolean Export2DXF (String archivoDXF, String nombreCampos, String valorCampos, double X, double Y, int escala) {
		
		return true;
	}
	
	/**
	 * Funcion para crear un croquis a partir de las coordenadas
	 * @param x Coordenadas <b>X</b>
	 * @param y Coordenadas <b>Y</b>
	 * @param ancho Ancho del croquis
	 * @param alto Alto del croquis
	 * @param cont Contador de puntos
	 * @param status Indica si se debe de cerrar automaticamente el croquis
	 * @return Croquis (scrollbarpannel)
	 */
	public Control CargarCroquis(int x[], int y[], int ancho, int alto,  int cont, boolean status) {				
		int maxx, maxy;
		maxx =maxy =0;		
		for(int i=0; i<cont; i++) {			
			maxx=maxx<x[i]?x[i]:maxx;
			maxy=maxy<y[i]?y[i]:maxy;
		}
		
		//acomodando ejes
		for(int i=0; i<cont; i++) {
			x[i] =(x[i]+5)*2;
			y[i] =(maxy-y[i]+15)*2;			
		}
		
		//ajustando los maximos de X's y Y's
		maxx=(maxx+25)*2;
		maxy=(maxy+25)*2;				

		
		int maxV = maxx > maxy?maxx:maxy;
		
		
		int minImg = ancho < alto?ancho:alto;
		
		
		
		
		for(int i=0; i<cont; i++) {
			y[i]=this.regla3(maxV, minImg-80, y[i])+15;
			x[i]=this.regla3(maxV, minImg-80, x[i])+15;
		}
		x[cont] = x[0];
		y[cont] = y[0];
		Image img = new Image(ancho,alto);
		Graphics g = new Graphics(img);
		g.setColor(Color.White);
		g.fillRect(0,0,img.getWidth(),img.getHeight());
		g.setColor(Color.DarkGray);			
		if(status)
			g.drawLines(x,y, cont+1);
		else {
			g.drawLines(x,y, cont-1);
			g.drawLine(x[cont-1], y[cont-1],x[0],y[0]);
			g.setPen(new Pen(new Color(255,0,0),Pen.DASH,1));
			g.drawLine(x[cont-1], y[cont-1],x[cont-2], y[cont-2]);
		}
		
		for(int i=0; i<cont; i++)		
			if(i<cont-1) {
				g.setColor(Color.Black);		
				g.drawText(String.valueOf(i+2).toString(),x[i],y[i]);				
			}
			else
				g.drawText("1",x[i],y[i]);			
		mImage mi = new mImage();
		mi.setImage(img);
		mi.transparentColor = Color.White;
		return new ScrollBarPanel(new ImageControl(mi));		
	}
	/**
	 * Regla de 3 para autoajustar el croquis
	 * A -> B
	 * C -> ? (valor buscado)
	 * @param A A
	 * @param B B
	 * @param C C
	 * @return ? (El valor buscado)
	 */
	private int regla3(int A, int B, int C) {		
		return (C*B)/A;
				
	}
}
